////公有继承独有特点
//#include <iostream>
//
//using namespace std;
//
//class Base {
//public://原始标记
//    int m_a;
//    void foo() { cout << "Base::foo()" << endl; }
//protected://原始标记
//    int m_b;
//    void bar() { cout << "Base::bar()" << endl; }
//private://原始标记
//    int m_c;
//    void hum() { cout << "Base::hum()" << endl; }
//};
////class Derived :public Base {
//class Derived :public Base {//子 m_a/foo是public,m_b/bar是protected，m_c/hum是private类对基类的成员重新标记访问控制限定符
//public:
//    void foo() {
//        cout << "Derived::foo()" << endl;
//    }
//private:
//    int m_d;
//};
//int main(void) {
//    Derived d;//当利用子类对象，在类外访问基类成员，能否访问，编译器查看这些成员在子类中的重新标记
//    d.m_a = 100;
//    d.foo();//ok
//    
//    //只有在公有继承下，子类对象在类外可以访问基类的公有成员，其他继承方式不可以
//    //只有在公有继承下，子类类型的指针和基类类型的指针可以进行转换
//    //只有在公有继承下，子类类型的引用和基类类型的引用可以转
//    return 0;//error
//}